package tt.dz.egobus.servicemanager.service;

import tt.dz.egobus.servicemanager.core.task.DynamicTask;
import tt.dz.egobus.servicemanager.core.task.DynamicTaskNamespace;

import java.util.List;
import java.util.Map;

/**
 * @author Anson
 * @date 17-8-4
 * @name 动态任务服务
 * @since 1.0.6
 */
public interface DynamicTaskService {

    /**
     * @author Anson
     * @date 17-8-4
     * @name 获取缓存级别中存在动态任务
     * @since 1.0.6
     */
    List<DynamicTask> getCurLiveDynamicTask();

    /**
     * @param tasks 添加一系列的动态任务
     * @author Anson
     * @date 17-8-4
     * @name 添加一些不存在的动态任务
     * @since 1.0.6
     */
    void addDynamicTask(DynamicTask... tasks);

    /**
     * @param task
     * @author Anson
     * @date 17-8-7
     * @name 判断当前任务是否已经添加了
     * @since 1.0.6
     */
    boolean isContainerDynamicTask(DynamicTask task);

    /**
     * @param task 一个的动态任务
     * @author Anson
     * @date 17-8-4
     * @name 删除一个的动态任务
     * @since 1.0.6
     */
    void deleteDynamicTask(DynamicTask task);

    /**
     * @param taskNamespace 当前任务的命名空间
     * @author Anson
     * @date 17-8-15
     * @name 根据当前命名空间删除缓存
     * @since 1.0.6
     */
    void deleteDynamicTaskNamespace(DynamicTaskNamespace taskNamespace);

    /**
     * @author Anson
     * @date 17-8-4
     * @name 获取缓存级别中存在动态任务
     * @since 1.0.6
     */
    Map<String, DynamicTask> getCurLiveDynamicMapTask();


    /**
     * @param task 任务
     * @author Anson
     * @date 17-8-4
     * @name
     * @since 1.0.6
     */
    void modifyDynamicTask(DynamicTask task);
}
